/**
在 Nuxt 3 中，插件（Plugins）是用于扩展应用功能的强大工具。它们可以在应用的生命周期中注入自定义逻辑、第三方库或 Vue 插件，从而增强应用的功能。
  1. 插件的作用
  - 注入功能：可以将自定义功能或第三方库注入到 Vue 实例中，方便在组件中使用。
  - 扩展 Vue 实例：可以在 Vue 实例中添加全局方法、属性或组件。
  - 中间件功能：可以在应用的请求处理过程中执行特定逻辑。

  2. 插件的创建
  在 Nuxt 3 中，插件通常放置在 `plugins` 目录下。插件文件的命名以 `.ts` 或 `.js` 结尾。例如，可以创建一个名为 `my-plugin.ts` 的插件：

  ```typescript
  // plugins/my-plugin.ts
  import { defineNuxtPlugin } from '#app'

  export default defineNuxtPlugin((nuxtApp) => {
    // 在这里可以添加自定义逻辑或注入功能
    nuxtApp.provide('myFunction', () => {
      console.log('Hello from myFunction!')
    })
  })
  ```

  3. 使用插件
  在组件中使用插件时，可以通过 `useNuxtApp` 或 `inject` 方法访问注入的功能。例如：

  ```vue
  <template>
    <button @click="callMyFunction">调用插件函数</button>
  </template>

  <script setup>
  const { $myFunction } = useNuxtApp()

  const callMyFunction = () => {
    $myFunction() // 调用插件中的函数
  }
  </script>
  ```

  4. 插件的配置
  在 `nuxt.config.ts` 文件中，可以通过 `plugins` 数组配置插件：

  ```typescript
  // nuxt.config.ts
  export default defineNuxtConfig({
    plugins: [
      '~/plugins/my-plugin.ts' // 引入插件
    ]
  })
  ```

  5. 插件的生命周期
  插件的执行顺序与 Nuxt 应用的生命周期密切相关。在应用启动时，插件会被加载并按照配置的顺序执行。

  6. 注意事项
  - 异步插件：如果插件需要异步操作，可以返回一个 Promise。
  - 类型支持：使用 TypeScript 时，可以为插件提供类型定义，以获得更好的开发体验。

  7. 适用场景
  - 第三方库集成：如集成 Axios、Vuex、UI 组件库等。
  - 全局方法或属性：需要在多个组件中共享的功能或数据。
  - 中间件逻辑：在请求处理过程中需要执行的逻辑。
  希望以上总结能够帮助你更好地理解 Nuxt 3 中插件的使用和作用！如果有其他问题，欢迎随时询问。
 */
export default defineNuxtPlugin((nuxtApp) => {
  return {
    provide: {
      // 自定义的插件，格式化价格的插件 （创建Vue实例时就会自动注册好）
      formPrice: (price: number) => {
        return price.toFixed(2);
      },
    },
  };
});
